home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload Trio 2 / Shareware Overload Trio Volume 2 (Chestnut CD-ROM).ISO / dir37 / mxmnu241.zip / MARXCOM.MNU < prev    next >
Text File  |  1993-01-02  |  6KB  |  304 lines

  1. Comment
  2. ==========================================================
  3.  
  4. Copyright 1992 by Marc Perkel * All right reserved.
  5.  
  6. This program is a sample communications program in Marxmenu.
  7. It isn't as good as Procomm, but it isn't half bad for a few
  8. pages of code.
  9.  
  10. =========================================================
  11. EndComment
  12.  
  13. Var
  14.   InitString
  15.   Compuserve
  16.   StartTime
  17.   LastFile
  18.   SendingFile
  19.  
  20.  
  21. Setup
  22. ComPort = Com2             ;your com port
  23. InitString = 'ATZ'         ;your init string
  24. Compuserve = False         ;set to true if accessing Compuserve
  25. ComInitPort(38400,8,'N',1)
  26. ComHangupOnExit Off
  27.  
  28. if Compuserve
  29.    ComStripHighBit
  30.    ComBPlus
  31. endif
  32.  
  33. Writeln 'MarxCom * Copyright 1992 by Marc Perkel'
  34. Writeln
  35. Writeln 'Alt-X to Exit * Alt-H to HangUp * PgUp to Upload * PgDn to Download
  36. Writeln
  37. ComWrite InitString CR
  38.  
  39. Terminal
  40.  
  41. ;----- Set up Communications
  42.  
  43. Procedure Setup
  44.    Explode Off
  45.    ClearScreenOnExit Off
  46.    BlankTime = 0
  47.    Mouse Off
  48.    NoBoxBorder
  49.    AnsiWindows
  50.    DrawBox 1 1 ScreenWidth ScreenHeight
  51.    WordStarKeys Off
  52.    {Set up event logic}
  53.  
  54.    KeyEvent(PgDnKey) = loc DownLoad
  55.    KeyEvent(PgUpKey) = loc UpLoad
  56.    KeyEvent(AltX)  = loc ExitProgram
  57.    KeyEvent(AltH)  = loc Hangup
  58.    ComXmitAbortProgram = loc XmitAbort
  59.    ComXmitStatusProgram = loc XmitStatus
  60.  
  61. EndProc
  62.  
  63.  
  64. ;----- This is the main terminal loop
  65.  
  66. Procedure Terminal
  67.    while True
  68.       Cursor On
  69.       if KbdReady then ComWrite(ReadKey)
  70.       if ComCharReady then Write(ComReadChar)
  71.    endwhile
  72. EndProc
  73.  
  74.  
  75. ;----- Exit the Menu
  76.  
  77. Procedure ExitProgram
  78.    ExitMenu
  79. EndProc
  80.  
  81.  
  82. ;----- Download Menu
  83.  
  84. Procedure DownLoad
  85. var FileName Proto
  86.    Proto = PickProtocol
  87.    if Proto = Esc
  88.       Return
  89.  
  90.    elseif Proto = '1'
  91.       FileName = AskForFileName
  92.       if FileName = '' then return
  93.       ComRecXModem(FileName)
  94.  
  95.    elseif Proto = '2'
  96.       FileName = AskForFileName
  97.       if FileName = '' then return
  98.       ComRec1kXModem(FileName)
  99.  
  100.    elseif Proto = '3'
  101.       ComRecYModem
  102.  
  103.    elseif Proto = '4'
  104.       ComRecYModemG
  105.  
  106.    elseif Proto = '5'
  107.       ComRecZModem
  108.  
  109.    elseif Proto = '6'
  110.       ComRecKermit
  111.  
  112.    endif
  113.    if ComResult <> 0
  114.       Writeln 'Error Status: ' ComResult
  115.       Wait 400
  116.    endif
  117. EndProc
  118.  
  119.  
  120. ;----- UpLoad Menu
  121.  
  122. Procedure UpLoad
  123. var FileName Proto
  124.    FileName = AskForFileName
  125.    if (FileName > '') and ExistFile(FileName)
  126.       Proto = PickProtocol
  127.       if Proto = Esc then Return
  128.  
  129.       SendingFile
  130.       FileName = CleanFileName(FileName)
  131.       Writeln
  132.  
  133.       if Proto = '1'
  134.          ComSendXModem(FileName)
  135.  
  136.       elseif Proto = '2'
  137.          ComSend1kXModem(FileName)
  138.  
  139.       elseif Proto = '3'
  140.          ComSendYModem(FileName)
  141.  
  142.       elseif Proto = '4'
  143.          ComSendYModemG(FileName)
  144.  
  145.       elseif Proto = '5'
  146.          ComSendZModem(FileName)
  147.  
  148.       elseif Proto = '6'
  149.          ComSendKermit(FileName)
  150.  
  151.       endif
  152.  
  153.    endif
  154.    SendingFile Off
  155. EndProc
  156.  
  157.  
  158. Procedure AskForFileName
  159. var FileName
  160.    DoubleLineBox
  161.    BoxBorderColor LCyan Mag
  162.    BoxInsideColor Yellow Mag
  163.    InverseColor Yellow Red
  164.    DrawBox 10 20 40 3
  165.    Write ' FileName: '
  166.    FileName = Readln
  167.    EraseTopWindow
  168.    Return FileName
  169. EndProc
  170.  
  171.  
  172. Procedure PickProtocol
  173. var Ch
  174.    DoubleLineBox
  175.    BoxBorderColor LCyan Mag
  176.    BoxInsideColor Yellow Mag
  177.    InverseColor Yellow Red
  178.    DrawBox 50 7 20 8
  179.    UseArrows On
  180.    Writeln '  1 - XModem'
  181.    Writeln '  2 - XModem 1k'
  182.    Writeln '  3 - YModem'
  183.    Writeln '  4 - YModem G'
  184.    Writeln '  5 - ZModem'
  185.    Write   '  6 - Kermit'
  186.    Ch = ReadKey
  187.    UseArrows Off
  188.    EraseTopWindow
  189.    Return Ch
  190. EndProc
  191.  
  192.  
  193. ;----- Hangup Modem
  194.  
  195. Procedure HangUp
  196.    Writeln
  197.    Writeln
  198.    Writeln 'Hanging Up'
  199.    Writeln
  200.    ComDTR Off
  201.    Wait 50
  202.    ComDTR
  203. EndProc
  204.  
  205.  
  206. ;----- ESC aborts UpLoad or Download
  207.  
  208. Procedure XmitAbort
  209. var Ch
  210.    if not ComCD then Return True
  211.    if not KbdReady then Return False
  212.    Ch = ReadKey
  213.    if Ch <> Esc then Return False
  214.    Return True
  215. EndProc
  216.  
  217.  
  218. ;----- Display file transfer status
  219.  
  220. Procedure XmitStatus
  221. var Progress BarSize X
  222.    if ComXmitStarting
  223.       DoubleLineBox
  224.       BoxBorderColor LCyan Mag
  225.       BoxInsideColor White Mag
  226.       BoxHeaderColor Yellow Cyan
  227.       BoxHeader ' Transfer Status - ' + ComProtocol + ' '
  228.       if SendingFile
  229.          DrawBox 43 6 35 10
  230.       else
  231.          DrawBox 43 6 35 11
  232.       endif
  233.  
  234.    elseif ComXmitEnding
  235.       EraseTopWindow
  236.       LastFile = ''
  237.    else
  238.  
  239.       BarSize = 37
  240.       if ComFileName <> LastFile
  241.          LastFile = ComFileName
  242.          StartTime = Now
  243.       endif
  244.       GotoXY 1 1
  245.       Write '         File Name: ' ComFileName
  246.       ClearLine
  247.       Writeln
  248.       Write ' Bytes Transferred: ' ComBytesTransferred
  249.       ClearLine
  250.       Writeln
  251.       Write '   Bytes Remaining: ' ComBytesRemaining
  252.       ClearLine
  253.       Writeln
  254.       if not SendingFile
  255.          Write '               CPS: '
  256.          if Now > StartTime
  257.             X = ComBytesTransferred / (Now - StartTime)
  258.             if X > 0
  259.                X = X / (X / 20) * (X / 20)
  260.             endif
  261.             Write X
  262.          else
  263.             Write '0'
  264.          endif
  265.          ClearLine
  266.          Writeln
  267.       endif
  268.       Write '         File Size: ' ComFileSize
  269.       ClearLine
  270.       Writeln
  271.       Write '        Block Size: ' ComBlockSize
  272.       ClearLine
  273.       Writeln
  274.       Write '      Block Errors: ' ComBlockErrors
  275.       ClearLine
  276.       Writeln
  277.       Write '      Total Errors: ' ComTotalErrors
  278.       ClearLine
  279.  
  280.       if ComFileSize > 0
  281.          Progress = ComBytesTransferred * BarSize / ComFileSize
  282.       endif
  283.       if ComFileSize > 0
  284.          Writeln
  285.          Write ' Progress: ['
  286.          if ColorScreen then TextColor Cyan Mag
  287.          Loop Progress / 2
  288.             Write '█'
  289.          endloop
  290.          if Progress mod 2 = 0
  291.             Write ' '
  292.          else
  293.             Write '▌'
  294.          endif
  295.          Loop Max(BarSize - Progress / 2 - 1,0)
  296.             Write ' '
  297.          endloop
  298.          TextColor White Mag
  299.          Write ']'
  300.          ClearLine
  301.       endif
  302.    endif
  303. EndProc
  304.